import axios from 'axios'
// import router from '../router'
import store from '../store'
import { refreshTokenAPI } from '../api/user'
const request = axios.create()
// 请求拦截
request.interceptors.request.use(config => {
  config.baseURL = 'http://toutiao.itheima.net'
  if (store.state.token) {
    config.headers.Authorization = 'Bearer ' + store.state.token
  }
  return config
}, error => {
  return Promise.reject(error)
})
// 响应拦截器
request.interceptors.response.use(config => {
  return config.data
}, async error => {
  if (error.response.status === 401) {
    // 续签方式 1 用户重新登录
    // store.commit('setToken', '')
    // router.replace({
    //   path: '/login'
    // })
    // 续签 2 用户无感知
    store.commit('setToken', '')
    const res = await refreshTokenAPI()
    store.commit('setToken', res.data.token)
    // 再调用一次未完成的请求啊(用户无感知)
    // error.config 就是上一次axios请求的配置对象
    // console.dir(error.config)
    // 把新的token赋予到下一次axios请求的请求头中
    error.config.headers.Authorization = 'Bearer ' + res.data.token
    // return到await的地方
    return axios(error.config)
  }
  return Promise.reject(error)
})
export {
  request
}
